package com.open.basic.json;

import java.util.List;
import java.util.Map;

public interface JsonClient {
    /**
     * 将对象转换json形式
     *
     * @param obj 输入的对象
     * @return json串
     */
    String toJson(Object obj);

    /**
     * json字符串转换为对象
     *
     * @param json  json字符串
     * @param clazz 要转换的简单对象类型
     * @param <T>   对象类型
     * @return 对象
     */
    <T> T fromJson(String json, Class<T> clazz);

    /**
     * 转换为对象列表
     *
     * @param json  json 字符串
     * @param clazz 对象列项
     * @param <T>   对象类型
     * @return 对象列表
     */
    <T> List<T> toList(String json, Class<T> clazz);

    /**
     * json转换为Map对象
     *
     * @param json       json字符串
     * @param keyClazz   key对象类型
     * @param valueClazz 值对象类型
     * @param <K>        key值类型
     * @param <V>        值类型
     * @return map对象
     */
    <K, V> Map<K, V> toMap(String json, Class<K> keyClazz, Class<V> valueClazz);
}
